package com.bluemsun.naturallanguageprocessing.dao;

import com.bluemsun.naturallanguageprocessing.entity.Favorites;
import com.bluemsun.naturallanguageprocessing.vo.QuestionVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Set;

@Repository
public interface CollectionMapper {
    // 查询用户的收藏
    List<QuestionVO> queryUserCollections(@Param("userId") Integer userId);

    // 查询用户是否有这个收藏夹
    Integer hasFavorite(@Param("userId") Integer userId,@Param("favoriteId") Integer favoriteId);

    // 查询用户的收藏夹
    List<Favorites> queryUserFavorites(@Param("userId") Integer userId,@Param("questionId") Integer questionId);

    // 查询问题所在的收藏夹
    Set<Integer> queryUserFavoritesOfQuestion(@Param("questionId") Integer questionId,@Param("userId") Integer userId);

    // 用户添加收藏
    Integer addCollection(@Param("list") Set<Integer> favoriteIds , @Param("questionId") Integer questionId);

    // 用户取消收藏
    Integer cancelCollection(@Param("list") List<Integer> list);

    // 用户添加收藏夹
    Integer addFavorite(@Param("userId") Integer userId,@Param("favorites") Favorites favorites);

    // 用户修改收藏夹名称
    Integer modifyName(@Param("name") String name,@Param("favoriteId") Integer id);

    // 用户删除收藏夹
    Integer deleteFavorite(@Param("id") Integer id);

    // 用户删除收藏夹下的某个问题
    Integer deleteQuestionOfFavorite(@Param("set") Set<Integer> favoriteIds, @Param("questionId") Integer questionId);

    // 用户删除收藏夹下的所有问题
    Integer deleteQuestionsOfFavorite(@Param("favoriteId") Integer favoriteId);

    // 用户批量删除某个收藏夹下面的问题
    Integer deleteSomeQuestionsOfFavorite(@Param("favoriteId") Integer favoriteId,@Param("set") Set<Integer> questionIds );

    // 查询用户的收藏
    List<Favorites> queryCollections(@Param("userId") Integer userId);

    // 查询用户收藏的问题Id
    List<Integer> isUserCollection(@Param("userId") Integer userId);

}
